package com.laf.manage.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.laf.common.core.page.TableDataInfo;
import com.laf.manage.domain.dto.DynamicDTO;
import com.laf.manage.domain.dto.PageDTO;
import com.laf.manage.domain.dto.StatusCountDTO;
import com.laf.manage.domain.po.Dynamic;
import com.laf.manage.domain.query.DynamicQuery;
import com.laf.manage.domain.vo.DynamicVO;
import com.laf.manage.enums.VerifyStatusEnum;

import java.util.List;

/**
 * 内容管理Service接口
 *
 * @author zian
 * @date 2024-11-09
 */
public interface IDynamicService extends IService<Dynamic> {

    /**
     * 查询内容管理列表
     *
     * @param query      查询条件
     * @param pageNum 页码
     * @param pageSize 页大小
     * @return 内容集合
     */
    TableDataInfo selectDynamicDocList(DynamicQuery query , Integer pageNum , Integer pageSize);

    /**
     * 根据id 获取内容详情
     *
     * @param id      id
     * @param isAdmin
     * @return vo
     */
    DynamicVO getDetailsById(Long id , boolean isAdmin);



    /**
     * 更新内容状态
     */
    void updateStatus(Long id, VerifyStatusEnum verifyStatusEnum , String remark);

    /**
     * 删除动态
     * @param ids 动态id 集合
     */
    void delByIds(List<Long> ids);

    /**
     * 新增动态
     * @param dto
     */
    void addDynamic(DynamicDTO dto);

    /**
     * 修改动态
     * @param dto
     */
    void updateDynamic(DynamicDTO dto);

    /**
     * 查询动态列表 - 用户端的
     *
     * @param query
     * @return
     */
    PageDTO<DynamicVO> selectDynamicVOList(DynamicQuery query);

    /**
     * 获取已通过的动态详情
     * @param id
     * @return
     */
    DynamicVO getPassedDetailsById(Long id);


    /**
     * 批量修改动态浏览量的
     */
    void batchUpdateHits(List<Dynamic> dynamicList);

    /**
     * 动态状态统计
     * @return
     */
    List<StatusCountDTO> dynamicCount();


}
